import axios from "axios";
import {getTokenName, messageConfirm, messageTip, removeToken} from "../util/util.js";
import {ElMessageBox} from "element-plus";

axios.defaults.baseURL = "http://localhost:8089";

export function doGet(url,params){
    return axios({
        method: 'GET',
        url: url,
        params: params,
        dataType:'json',
    })
}

export function doPost(url,data){
    return axios({
        method:'POST',
        url: url,
        data: data,
        dataType:'json',
    })
}

export function doPut(url,data){
    return axios({
        method:'PUT',
        url: url,
        data: data,
        dataType:'json',
    })
}

export function doDelete(url,params){
    return axios({
        method:'DELETE',
        url: url,
        params: params,
        dataType:'json',
    })
}

// 添加请求拦截器
axios.interceptors.request.use((config) => {
    // 在发送请求之前做些什么: 在请求头中放个token
    let token = window.sessionStorage.getItem(getTokenName());
    if (!token) {
        token = window.localStorage.getItem(getTokenName());
        if (token) {
            config.headers['rememberMe'] = true;
        }
    }
    if (token) {
        config.headers['Authorization'] = token;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use( (response)=> {
    // 对响应数据做点什么: 拦截token验证的结果 进行相应的提示和页面跳转
    if (response.data.code > 900){
        //提用户提示 并且跳转页面
        messageConfirm(response.data.msg + ",是否重新登录？")
        .then(() => {
               //既然后端验证token 未通过，那么前端的token肯定有问题 就没有必要存储了
               removeToken();
               window.location.href = "/";
            }).catch(() => {
                messageTip("取消强制退出","warning");
            })
        return ;
    }
    return response;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});